/*
 * @Author: qin
 * @Date:   2018-08-28
 * +----------------------------------------------------------------------
 * | admin [ 后台管理系统公共配置信息 ]
 * | 地图封装方法
 * +----------------------------------------------------------------------
 */
layui.define(['layer', 'configure', 'bluebird', 'layerPop', 'json'], function (exports) {
    var layer = layui.layer;
    var configure = layui.configure;
    var bluebird = layui.bluebird;
    var layerPop = layui.layerPop;
    var $ = layui.$;
    var mapExtend = {
        elements: $('.pointChoose'),
        param: {
            mode: 'edit',//模式edit为编辑模式，detail为详情模式,默认编辑模式
            data: {
                points: [{
                    lng: '',//经度
                    lat: ''//纬度
                }]
            }
        },
        eventBind: function () {
            mapExtend.elements.on('click', function () {
                //地图选择
                var pointChoose = $(this);
                layerPop.param.title = '选择位置';
                layerPop.param.btns = ['保存'];
                layerPop.param.isTop = true;
                layerPop.param.url = configure.MAP_TEMPLATE
                    .replace('{lat}', encodeURIComponent(pointChoose.find('input[name=projLat]').val()))
                    .replace('{lng}', encodeURIComponent(pointChoose.find('input[name=projLon]').val()));
                layerPop.param.area = ['900px', '500px'];
                if (mapExtend.param.mode === 'edit') {
                    layerPop.param.saveForm = function (_data) {
                        var points;
                        try {
                            points = JSON.parse(_data);
                            if (points.lat && points.lng) {
                                pointChoose.find('.detail').text('经度：' + points.lng + ';纬度：' + points.lat);
                                pointChoose.find('input[name=projLat]').val(points.lat);
                                pointChoose.find('input[name=projLon]').val(points.lng);
                                layerPop.close();
                            }
                            else {
                                top.layer.msg('请重新选择');
                            }
                        }
                        catch (e) {
                            top.layer.msg('请重新选择');
                        }
                    };
                    layerPop.popOneTopFrame();
                }
                else if (mapExtend.param.mode === 'detail') {
                    layerPop.popupNoBtn();
                }
            });
        },
        init: function () {
            mapExtend.elements.each(function (index, item) {
                if ($(item).find('.detail').length === 0) {
                    $(item).append('<div class="detail">请选择</div>');
                }
                if ($(item).find('input[name=projLon]').length === 0) {
                    $(item).append('<input type="hidden" name="projLon"/>');
                }
                if ($(item).find('input[name=projLat]').length === 0) {
                    $(item).append('<input type="hidden" name="projLat"/>');
                }
                if ($(item).find('.layui-btn-primary').length === 0) {
                    $(item).append('<button type="button" class="layui-btn layui-btn-primary">选择</button>');
                }
                if (mapExtend.param.data.points[index].lat && mapExtend.param.data.points[index].lat !== '' && mapExtend.param.data.points[index].lng && mapExtend.param.data.points[index].lng !== '') {
                    $(item).find('.detail').text('经度：' + mapExtend.param.data.points[index].lng + ';纬度：' + mapExtend.param.data.points[index].lat);
                    $(item).find('input[name=projLat]').val(mapExtend.param.data.points[index].lat);
                    $(item).find('input[name=projLon]').val(mapExtend.param.data.points[index].lng);
                }
                mapExtend.eventBind();
            });
        }
    };
    exports('mapExtend', mapExtend);
});